// #include <stdio.h>
// #include  <stdlib.h>
// #include  <string.h>
// #include  "windows.h"
// typedef struct {
//     int *a;
//     int top;
//     int capacity;
// }Stack;
//
// void StackInit(Stack *s) {
//     s->a=NULL;
//     s->top=0;
//     s->capacity=0;
// }
// void StackDestroy(Stack *s) {
//     free(s->a);
//     s->a=NULL;
//     s->top=0;
//     s->capacity=0;
// }
// void StackPush(Stack *s,int x) {
//     if(s->top==s->capacity) {
//         int NewCapacity=s->capacity==0?10:s->capacity*2;
//         s->a=(int *)realloc(s->a,sizeof(int)*NewCapacity);
//         if(s->a==NULL) {
//             printf("内存分配failure");
//             exit(-1);
//         }
//         s->capacity=NewCapacity;
//     }
//     s->a[s->top++]=x;
// }
// void StackPop(Stack *s) {
//         if(s->top==0) {
//             printf("栈为空");
//             exit(-1);
//             }
//     s->top--;
// }
// int StackEmpty(Stack *s) {
//     return s->top==0;
// }
// int StackLength(Stack *s) {
//     return s->top;
// }
// int StackTop(Stack *s) {
//     return s->a[s->top-1];
// }
// int StackCapacity(Stack *s) {
//     return s->capacity;
// }
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     Stack s;
//     StackInit(&s);
//     StackPush(&s,1);
//     StackPush(&s,2);
//     StackPush(&s,3);
//     StackPush(&s,4);
//     if(StackEmpty(&s)) {
//             printf("栈为空\n");
//     } else {
//         printf("栈不为空\n");
//     }
//     printf("栈顶元素为%d\n",StackTop(&s));
//     printf("栈的长度为%d\n",StackLength(&s));
//     printf("栈的容量为%d\n",StackCapacity(&s));
//     printf("___________________________________\n");
//     StackPop(&s);
//     if(StackEmpty(&s)) {
//         printf("栈为空\n");
//     } else {
//         printf("栈不为空\n");
//     }
//     printf("栈顶元素为%d\n",StackTop(&s));
//     printf("栈的长度为%d\n",StackLength(&s));
//     printf("栈的容量为%d\n",StackCapacity(&s));
//     printf("___________________________________\n");
//     StackPop(&s);
//     StackPop(&s);
//     if(StackEmpty(&s)) {
//         printf("栈为空\n");
//     } else {
//         printf("栈不为空\n");
//     }
//     printf("栈顶元素为%d\n",StackTop(&s));
//     printf("栈的长度为%d\n",StackLength(&s));
//     printf("栈的容量为%d\n",StackCapacity(&s));
//     printf("___________________________________\n");
//     StackPop(&s);
//     if(StackEmpty(&s)) {
//         printf("栈为空\n");
//     } else {
//         printf("栈不为空\n");
//     }
//     printf("栈的长度为%d\n",StackLength(&s));
//     printf("栈的容量为%d\n",StackCapacity(&s));
//     StackDestroy(&s);
//     return 0;
// }